import Vue from 'vue'
import App from './App.vue'
import router from './router'
import './plugins/element.js'
import './plugins/monoplastySlideVerify.js'
import 'default-passive-events'
// 导入全局样式表
import './assets/css/global.css'
// 导入字体
import './plugins/fontawesome.js'
// svg图标库
import '@/icons'
import axios from 'axios'
import date from './utils/date'
import conf from './common/conf'
import memory from './store/memory'
import store from './store/index'
// 导入Nprogress包对应的js、css，以美化进度条
import NProgress from 'nprogress'
Vue.prototype.$date = date
Vue.prototype.$config = conf
Vue.prototype.$memory = memory
Vue.config.productionTip = false

// 配置请求的根路径
// axios.defaults.baseURL = 'http://192.168.0.103'
Vue.prototype.$http = axios
// 设置资讯要展示的图片名称
Vue.prototype.$realTimeInfo = '活动'
// 配置 超时时间
// axios.defaults.timeout = 3500
// 在request拦截器中，展示进度条 NProgress.start();
axios.interceptors.request.use(config => {
  NProgress.start()
  // 自动设置设备主键
  // console.log(config.data)
  if (config.method === 'post') {
    config.data = {
      ...config.data
    }
  } else if (config.method === 'get') {
    config.params = {
      ...config.params
    }
  }
  // 添加请求时间
  config.params = {
    ...config.params,
    t: new Date().getTime()
  }
  // 签名
  if (!config.headers.t) {
    config.headers.t = new Date().getTime()
  }
  if (!config.headers.md) {
    config.headers.md = Vue.prototype.$config.sign(config.params)
  }

  // var params = config.params

  // 获取token
  Vue.prototype.$memory.getToken().then(token => {
    // 设置token
    // config.headers.Authorization = window.sessionStorage.getItem('token')
    config.headers.Authorization = token
  }).catch(e => {
    // 没有获取到token
    if (e.status) {
      return new Promise((resolve, reject) => {
        reject(e)
      })
    } else {
      return config
    }
  })
  // 在最后必须return
  return config
})
// 在response拦截器中，隐藏进度条NProgress.done();
axios.interceptors.response.use(config => {
  NProgress.done()
  // config为请求对象
  return config
})
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')
